home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
et
/
et3_0-a1.lha
/
et3
/
src
/
VObjectText.h.new
< prev
next >
Wrap
Text File
|
1992-08-19
|
3KB
|
126 lines
#ifndef VObjectText_First
#ifdef __GNUG__
//pragma once
#pragma interface
#endif
#define VObjectText_First
#include "StyledText.h"
#include "Mark.h"
const cVObjectChar = '#'; // chararcter to mark a VObject
enum VobMarkFlags {
eVobValid = BIT(eMarkLast+1),
eVobMarkLast = eMarkLast + 1
};
//------ VisualMark -----------------------------------------------------------
class VisualMark: public Mark {
public:
MetaDef(VisualMark);
VisualMark(int p= 0, int l= 0, eMarkState s= eStateNone);
~VisualMark();
virtual int Width();
virtual void Draw(Point p, Rectangle clip, bool border)
};
//------ VObjectMark -----------------------------------------------------------
class VObjectMark: public VisualMark {
class VObject *vop;
public:
MetaDef(VObjectMark);
VObjectMark(int p= 0, int l= 0, VObject *vo= 0, eMarkState s= eStateNone);
~VObjectMark();
virtual int Width();
virtual void Draw(Point p, Rectangle clip, bool border)
VObject *GetVObject();
void SetVObject(VObject *vo);
void FreeAll();
OStream& PrintOn(OStream&);
IStream& ReadFrom(IStream&);
void CollectParts(Collection *col);
};
//------ VObjectText -----------------------------------------------------------
class MarkList;
class TextView;
class VObjectText: public StyledText {
MarkList *vobjects;
TextView *tv;
void Init();
protected:
void ReplaceRange(int from, int to, Text *src, int sfrom, int sto);
public:
MetaDef(VObjectText);
VObjectText();
VObjectText(int size, Font *fd= gSysFont, TxtParaAlign= eTxtParaLeft);
VObjectText(byte *buf, int len= -1, Font *fd= gSysFont, TxtParaAlign= eTxtParaLeft);
~VObjectText();
void InitNew();
//---editing
void SetCharStyle(TxtCharProp m, int f, int t, const CharStyleSpec &st);
void ReplaceCharStyles(RunArray *styles, int from, int to);
//---- VObject embedding
VObject *GetVObjectAt(int at);
byte GetEscapeChar();
void PasteVObject(VObject *vop, int from, int to);
VObject *ContainsPoint(Point p);
VObject *MarkAt(int charNo);
MarkList *GetVObjectMarks();
VObjectMark *GetMarkAt(int charNo);
int FindPositionOfVObject(VObject *); // -1 VObject not found
TextView *GetTextView();
void SetView(class TextView*);
bool IsVObjectChar(int charNo);
bool IsVObject(int charNo);
bool IsEscape (int at);
void VObjectChangedSize(VObject *);
Iterator *VObjectIterator();
int VObjectCount();
//---- activation/passivation
OStream& PrintOn(OStream&);
IStream& ReadFrom(IStream&);
void CollectParts(Collection *c);
void ClassInvariant();
};
inline bool VObjectText::IsVObjectChar(int charNo)
{
return (*this)[charNo] == cVObjectChar;
}
inline bool VObjectText::IsVObject(int charNo)
{
return (IsVObjectChar(charNo) && MarkAt(charNo));
}
inline VObject* VObjectMark::GetVObject()
{
return vop;
}
inline void VObjectMark::SetVObject(VObject *vo)
{
vop= vo;
}
#endif